home *** CD-ROM | disk | FTP | other *** search
/ CICA 1993 April / CICA MS Windows - April 1993.iso / unzipped / util / ewexec15 / ewexec.pas < prev    next >
Pascal/Delphi Source File  |  1993-02-15  |  3KB  |  165 lines

  1. {$A+,B-,D-,F-,G+,I-,K+,L+,N-,P-,Q-,R-,S-,T-,V-,W+,X+,Y-}
  2. {$M 8192,8192}
  3.  
  4. Program EWExec;
  5.  
  6. {$r EWEXEC.RES}
  7.  
  8. uses
  9. objects,
  10. owindows,
  11. odialogs,
  12. omemory,
  13. strings,
  14. winprocs,
  15. wintypes,
  16. windos,
  17. win31,
  18. bwcc,
  19. ostddlgs,
  20. globsup;
  21.  
  22. const
  23. id_mesg = 201;
  24.  
  25. type
  26. buf = array[0..127] of char;
  27.  
  28. pewemain = ^tewemain;
  29. tewemain = object(tapplication)
  30.   procedure initmainwindow; virtual;
  31. end;
  32.  
  33. pewe = ^tewe;
  34. tewe = object(tdlgwindow)
  35.   shell,
  36.   prog,
  37.   parms,
  38.   temp: buf;
  39.  
  40.   mesg: pstatic;
  41.  
  42.   constructor init(aparent: pwindowsobject; atitle: pchar);
  43.   procedure initchildren;
  44.   procedure setupwindow; virtual;
  45.  
  46.   procedure go;
  47.   procedure doexec(var msg: tmessage); virtual wm_first + wm_timer;
  48.   procedure ok(var msg: tmessage); virtual id_first + id_ok;
  49. end;
  50.  
  51. constructor tewe.init(aparent: pwindowsobject; atitle: pchar);
  52.   begin
  53.     tdlgwindow.init(aparent, atitle);
  54.     initchildren;
  55.  
  56.     shell[0]:=#0;
  57.     prog[0]:=#0;
  58.     parms[0]:=#0;
  59.     temp[0]:=#0;
  60.   end;
  61.  
  62. procedure tewe.initchildren;
  63.   begin
  64.     mesg:=new(pstatic, initresource(@self, id_mesg, 126));
  65.   end;
  66.  
  67. procedure tewe.setupwindow;
  68.   begin
  69.     tdlgwindow.setupwindow;
  70.  
  71.     mesg^.settext('One moment...');
  72.  
  73.     settimer(hwindow, 1, 1500, nil);
  74.   end;
  75.  
  76. procedure tewe.go;
  77.  var i: integer;
  78.   begin
  79.     if (paramcount = 0) then
  80.       begin
  81.         mesg^.settext('Invalid command line');
  82.         messagebox(hwindow,
  83.                    'EWEXEC progname [paramaters]'#13#10#13#10+
  84.                    'example:'#13#10+
  85.                    'EWEXEC WOLF3D.BAT -next',
  86.                    'Syntax',
  87.                    mb_iconinformation or mb_ok);
  88.         exit;
  89.       end;
  90.  
  91.     strcopy(shell, getenvvar('COMSPEC'));
  92.  
  93.     strcopy(parms, ' /C ');
  94.  
  95.     strpcopy(prog, paramstr(1));
  96.     strupper(prog);
  97.  
  98.     strcat(parms, prog);
  99.     strcat(parms, #32);
  100.  
  101.     if (paramcount > 1) then
  102.       for i:=2 to paramcount do
  103.         begin
  104.           strpcopy(temp, paramstr(i));
  105.           strcat(parms, temp);
  106.           strcat(parms, #32);
  107.         end;
  108.  
  109.  
  110.     if not exist(prog) then
  111.       begin
  112.         messagebeep(0);
  113.         strcopy(temp, 'Could not find: ');
  114.         strcat(temp, prog);
  115.         mesg^.settext(temp);
  116.         exit;
  117.       end
  118.        else
  119.          begin
  120.            strcopy(temp, shell);
  121.            strcat(temp, parms);
  122.            mesg^.settext(temp);
  123.          end;
  124.  
  125.     if not exitwindowsexec(shell, parms) then
  126.       begin
  127.         messagebeep(0);
  128.         strcopy(temp, 'Could not execute: ');
  129.         strcat(temp, prog);
  130.         mesg^.settext(temp);
  131.         exit;
  132.       end;
  133.  
  134.   end;
  135.  
  136. procedure tewe.doexec(var msg: tmessage);
  137.   begin
  138.     killtimer(hwindow, 1);
  139.  
  140.     go;
  141.   end;
  142.  
  143. procedure tewe.ok(var msg: tmessage);
  144.   begin
  145.     killtimer(hwindow, 1);
  146.  
  147.     go;
  148.  
  149.     tdlgwindow.ok(msg);
  150.   end;
  151.  
  152. { main window }
  153. procedure tewemain.initmainwindow;
  154.   begin
  155.     MainWindow := New(pewe, Init(nil, 'MAINWINDOW'));
  156.   end;
  157.  
  158. var
  159. ewe: tewemain;
  160.  
  161. begin
  162.   ewe.init('EWE');
  163.   ewe.run;
  164.   ewe.done;
  165. end.